UseList

    using UnityEngine;
    using System.Collections;
    using LuaInterface;
    using System.Collections.Generic;
    using System;

    //需要导出委托类型如下:
    //System.Predicate<int>
    //System.Action<int>
    //System.Comparison<int>
    public class UseList : LuaClient
    {
        private string script =
            @"
                function Exist2(v)
                    return v == 2
                end

                function IsEven(v)
                    return v % 2 == 0
                end

                function NotExist(v)
                    return false
                end

                function Compare(a, b)
                    if a > b then 
                        return 1
                    elseif a == b then
                        return 0
                    else
                        return -1
                    end
                end

                function Test(list, list1)        
                    list:Add(123)
                    print('Add result: list[0] is '..list[0])
                    list:AddRange(list1)
                    print(string.format('AddRange result: list[1] is %d, list[2] is %d', list[1], list[2]))

                    local const = list:AsReadOnly()
                    print('AsReadOnley:'..const[0])    

                    index = const:IndexOf(123)

                    if index == 0 then
                        print('const IndexOf is ok')
                    end

                    local pos = list:BinarySearch(1)
                    print('BinarySearch 1 result is: '..pos)

                    if list:Contains(123) then
                        print('list Contain 123')
                    else
                        error('list Contains result fail')
                    end

                    if list:Exists(Exist2) then
                        print('list exists 2')
                    else
                        error('list exists result fail')
                    end                    

                    if list:Find(Exist2) then
                        print('list Find is ok')
                    else
                        print('list Find error')
                    end

                    local fa = list:FindAll(IsEven)

                    if fa.Count == 2 then
                        print('FindAll is ok')
                    end

                    --注意推导后的委托声明必须注册, 这里是System.Predicate<int>
                    local index = list:FindIndex(System.Predicate_int(Exist2))

                    if index == 2 then
                        print('FindIndex is ok')
                    end

                    index = list:FindLastIndex(System.Predicate_int(Exist2))

                    if index == 2 then
                        print('FindLastIndex is ok')
                    end                

                    index = list:IndexOf(123)

                    if index == 0 then
                        print('IndexOf is ok')
                    end

                    index = list:LastIndexOf(123)

                    if index == 0 then
                        print('LastIndexOf is ok')
                    end

                    list:Remove(123)

                    if list[0] ~= 123 then
                        print('Remove is ok')
                    end

                    list:Insert(0, 123)

                    if list[0] == 123 then
                        print('Insert is ok')
                    end

                    list:RemoveAt(0)

                    if list[0] ~= 123 then
                        print('RemoveAt is ok')
                    end

                    list:Insert(0, 123)
                    list:ForEach(function(v) print('foreach: '..v) end)
                    local count = list.Count      

                    list:Sort(System.Comparison_int(Compare))
                    print('--------------sort list over----------------------')

                    for i = 0, count - 1 do
                        print('for:'..list[i])
                    end

                    list:Clear()
                    print('list Clear not count is '..list.Count)
                end
            ";


        protected override LuaFileUtils InitLoader()
        {
            return new LuaResLoader();
        }

        //屏蔽,例子不需要运行
        protected override void CallMain() { }

        protected override void OnLoadFinished()
        {        
            base.OnLoadFinished();
            luaState.DoString(script, "UseList.cs");
            List<int> list1 = new List<int>();
            list1.Add(1);
            list1.Add(2);
            list1.Add(4);

            LuaFunction func = luaState.GetFunction("Test");
            func.BeginPCall();
            func.Push(new List<int>());
            func.Push(list1);
            func.PCall();
            func.EndPCall();
            func.Dispose();
            func = null;        
        }
    }

🔚

results matching ""

    No results matching ""